﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using EntidadesDeNegocio;
using Utiles.Observer;

namespace ObliDisenoAplicaciones.Interfaz
{
    public partial class AgregarModificarProduccion : Form,IObservador
    {
        public AgregarModificarProduccion()
        {
            InitializeComponent();
            Sistema.Instancia.AgregarObservador(this);
            CargarGrilla();
        }
        /// <summary>
        /// Cargo la grilla de diseños
        /// </summary>
        private void CargarGrilla()
        {
            this.dGVDiseno.AutoGenerateColumns = false;
            BindingSource source = new BindingSource();
            source.DataSource = Sistema.Instancia.ListaDisenos;
            this.dGVDiseno.DataSource = source;
            this.dGVDiseno.Refresh();
        }
        /// <summary>
        /// Actualizo la grillad de servicios
        /// </summary>
        /// <param name="obj"></param>
        public void Actualizar(Observable obj)
        {
            CargarGrilla();
        }
        /// <summary>
        /// Fila seleccionada por el usuario
        /// </summary>
        /// <returns></returns>
        private DataGridViewRow FilaSeleccionada()
        {
            try
            {
                DataGridViewRow filaSeleccionada = dGVDiseno.SelectedRows[0];
                return filaSeleccionada;
                
            }
            catch (ArgumentOutOfRangeException)
            {
                MessageBox.Show("Debe seleccionar una fila completa para mostrar los datos del diseño", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return null;
            }
        }
        /// <summary>
        /// Evento de selección de celda
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dGVDiseno_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (FilaSeleccionada() != null)
            {
                Diseno dis = Sistema.Instancia.ObtenerDiseno(FilaSeleccionada().Cells[0].Value.ToString());
                txtMedio.Text = dis.Medio.ToString();
                txtNombreDiseno.Text = dis.Nombre;
            }
        }
        /// <summary>
        /// Agrega una producción
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAgregar_Click(object sender, EventArgs e)
        {
            if (FilaSeleccionada() != null)              
            {
                if (ValidarCampos())
                {
                    Sistema.Instancia.AgregarProduccion(Sistema.Instancia.ObtenerDiseno(FilaSeleccionada().Cells[0].Value.ToString()), Sistema.Instancia.ObtenerDiseno(FilaSeleccionada().Cells[0].Value.ToString()).Medio, int.Parse(txtCantidadProducir.Text), 0);
                    Sistema.Instancia.ActualizarTodo(Sistema.Instancia);
                    this.Dispose();
                }
            }
        }/// <summary>
        /// Valido campos requeridos
        /// </summary>
        /// <returns></returns>
        public bool ValidarCampos()
        {
            try
            {
                int cantidad = int.Parse(txtCantidadProducir.Text);
                return true;
            }
            catch 
            {
                MessageBox.Show("Formato incorrecto del campo Cantidad a Producir", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }            
        }        

    }
}
